﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using BusinessLayer.Interface;
using BusinessLayer.Facade;
using EntityLayer;
using System.Drawing;
namespace PresentationLayer
{
    public partial class WebForm11 : System.Web.UI.Page
    {
        private String msg, titulo;
        private static String RutaExcel = "";
        private clsIFacadeActualizarAgendaJudicial IAgendaJudicialActualizar;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (Session["coLegajo"] == "")
                    {
                        //Session["ingresar"] = false;
                        //Session["msg"] = "No existe opción para el procedimiento.";
                        //Session["titulo"] = "Mensaje";
                        Response.Redirect("wfrmAgendaJudicialListar.aspx", false);
                        return;
                    }
                    else
                    {
                        dtp_FechaAgenda.Text = DateTime.Now.ToShortDateString();

                        CargarCuaderno();
                        CargarTipo_Audiencia();
                        //CargarEtapas();
                        //CargarCargos();
                        //CargarDemandados();
                        if (!ObtenerDatos())
                        {
                            Response.Redirect("wfrmAgendaJudicialListar.aspx", false);
                            return;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                titulo = "Page_Load";
                MostrarComentario(ex.Message, titulo);
            }

        }

        protected void Btn_AgregarAgenda_Click(object sender, EventArgs e)
        {
            AgregarItem();
        }

        protected void Btn_QuitarAgenda_Click(object sender, EventArgs e)
        {
            QuitarItem();
        }

        protected void btn_GrabarAgenda_Click(object sender, EventArgs e)
        {
            GrabarAudiencia();
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("wfrmAgendaJudicialListar.aspx", true);
        }

        protected void dgv_Agenda_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            List<DetalleAudiencia> miListaAudiencia = null;
            miListaAudiencia = (List<DetalleAudiencia>)Session["MidetalleAudiencia"];

            dgv_Agenda.DataSource = miListaAudiencia;
            dgv_Agenda.DataBind();
        }

        protected void dgv_Agenda_PageIndexChanged(object sender, EventArgs e)
        {
            List<DetalleAudiencia> miListaAudiencia = null;
            miListaAudiencia = (List<DetalleAudiencia>)Session["MidetalleAudiencia"];

            dgv_Agenda.DataSource = miListaAudiencia;
            dgv_Agenda.DataBind();
        }

        protected void dgv_Agenda_HeaderFilterFillItems(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewHeaderFilterEventArgs e)
        {
            List<DetalleAudiencia> miListaAudiencia = null;
            miListaAudiencia = (List<DetalleAudiencia>)Session["MidetalleAudiencia"];

            dgv_Agenda.DataSource = miListaAudiencia;
            dgv_Agenda.DataBind();
        }

        #region Metodos
        private Boolean ObtenerDatos()
        {
            Boolean ok = true;
            msg = String.Empty;
            try
            {
                if (Session["coLegajo"] == null) { ok = false; msg = "No existe el código del Legajo"; }
                if (ok)
                {
                    txtNumeroLegajo.Text = Session["coLegajo"].ToString();
                    CargarAudiencia();
                }
            }
            catch (Exception ex)
            {
                ok = false;
                titulo = "ObtenerDatos";
                MostrarComentario(ex.Message, titulo);
            }
            if (!ok)
            {
                Session["ingresar"] = ok;
                Session["msg"] = msg;
            }
            return ok;
        }
        private void CargarAudiencia()
        {
            try
            {
                List<V_Listar_Audiencia> mi_ListaAudiencia = null;
                mi_ListaAudiencia = new List<V_Listar_Audiencia>();

                IAgendaJudicialActualizar = new clsFacadeActualizarAgendaJudicial();
                mi_ListaAudiencia = IAgendaJudicialActualizar.V_listarAudienciaCO_legajo(txtNumeroLegajo.Text);

                if (mi_ListaAudiencia == null || mi_ListaAudiencia.Count() == 0) { }
                else
                {
                    DetalleAudiencia ObjAudiencia_nuevo = new DetalleAudiencia();
                    List<DetalleAudiencia> miListaAudiencia = null;
                    miListaAudiencia = new List<DetalleAudiencia>();

                    int item_a = 0;
                    foreach (var s in mi_ListaAudiencia)
                    {
                        item_a = item_a + 1;

                        ObjAudiencia_nuevo.NU_item = item_a;
                        ObjAudiencia_nuevo.CO_legajo = s.CO_legajo;
                        ObjAudiencia_nuevo.CO_cuaderno = s.CO_cuaderno;
                        ObjAudiencia_nuevo.FE_audiencia = s.FE_audiencia.Value;
                        ObjAudiencia_nuevo.HO_audiencia = s.HO_audiencia;
                        ObjAudiencia_nuevo.CO_tipoaudiencia = s.CO_tipoaudiencia;
                        ObjAudiencia_nuevo.NO_tipoaudiencia = s.NO_tipoaudiencia;
                        ObjAudiencia_nuevo.TX_sumilla_audiencia = s.TX_sumilla_audiencia;
                        miListaAudiencia.Add(ObjAudiencia_nuevo);
                    }

                    Session["MidetalleAudiencia"] = miListaAudiencia;
                    dgv_Agenda.DataSource = miListaAudiencia;
                    dgv_Agenda.DataBind();
                }

                //dgv_Agenda.DataSource = mi_ListaAudiencia;
                //dgv_Agenda.DataBind();

                //if (miListaCuaderno == null || miListaCuaderno.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void CargarCuaderno()
        {
            try
            {
                IEnumerable<Object> listarCuaderno = null;
                listarCuaderno = new List<Object>();

                IAgendaJudicialActualizar = new clsFacadeActualizarAgendaJudicial();
                listarCuaderno = IAgendaJudicialActualizar.listarCuaderno();

                cbo_Cuaderno.DataSource = listarCuaderno;
                cbo_Cuaderno.ValueField = "CO_cuaderno";
                cbo_Cuaderno.TextField = "CO_cuaderno";
                cbo_Cuaderno.DataBind();
                cbo_Cuaderno.SelectedIndex = 0;

                if (listarCuaderno == null || listarCuaderno.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void CargarTipo_Audiencia()
        {
            try
            {
                IEnumerable<Object> listarTipo_Audiencia = null;
                listarTipo_Audiencia = new List<Object>();

                IAgendaJudicialActualizar = new clsFacadeActualizarAgendaJudicial();
                listarTipo_Audiencia = IAgendaJudicialActualizar.listarTipo_Audiencia();

                cbo_Tipo_Audiencia.DataSource = listarTipo_Audiencia;
                cbo_Tipo_Audiencia.ValueField = "CO_tipoaudiencia";
                cbo_Tipo_Audiencia.TextField = "NO_tipoaudiencia";
                cbo_Tipo_Audiencia.DataBind();
                cbo_Tipo_Audiencia.SelectedIndex = 0;

                if (listarTipo_Audiencia == null || listarTipo_Audiencia.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void MostrarComentario(String msg, String titulo = "Mensaje")
        {
            lblMensaje.Text = msg;
            pcMensaje.HeaderText = titulo;
            pcMensaje.ShowOnPageLoad = true;
        }

        private void AgregarItem()
        {
            try
            {
                int count = dgv_Agenda.VisibleRowCount;

                DetalleAudiencia ObjCuaderno = new DetalleAudiencia();
                ObjCuaderno.NU_item = count + 1;
                ObjCuaderno.CO_legajo = txtNumeroLegajo.Text;
                ObjCuaderno.CO_cuaderno = int.Parse(cbo_Cuaderno.SelectedItem.Value.ToString());
                ObjCuaderno.FE_audiencia = Convert.ToDateTime(dtp_FechaAgenda.Text);
                ObjCuaderno.HO_audiencia = txt_Hora.Text;
                ObjCuaderno.CO_tipoaudiencia = cbo_Tipo_Audiencia.SelectedItem.Value.ToString();
                ObjCuaderno.NO_tipoaudiencia = cbo_Tipo_Audiencia.SelectedItem.Text;
                ObjCuaderno.TX_sumilla_audiencia = txt_Sumilla.Text;

                List<DetalleAudiencia> miListaAudiencia = null;
                if (Session["MidetalleAudiencia"] == null)
                {
                    miListaAudiencia = new List<DetalleAudiencia>();
                    miListaAudiencia.Add(ObjCuaderno);
                }
                else
                {
                    miListaAudiencia = (List<DetalleAudiencia>)Session["MidetalleAudiencia"];
                    miListaAudiencia.Add(ObjCuaderno);
                }

                Session["MidetalleAudiencia"] = miListaAudiencia;
                dgv_Agenda.DataSource = miListaAudiencia;
                dgv_Agenda.DataBind();

                count = dgv_Agenda.VisibleRowCount;

                int Paginar = Convert.ToInt16(count / 10);
                dgv_Agenda.PageIndex = Paginar;
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.InnerException.ToString(), "Error");
            }
        }
        private void QuitarItem()
        {
            try
            {
                if (dgv_Agenda.VisibleRowCount == 0)
                {
                    MostrarComentario("No hay datos para quitar", "Error");
                }
                else
                {
                    int index = dgv_Agenda.FocusedRowIndex;
                    int item = (int)dgv_Agenda.GetRowValues(index, "NU_item");
                    List<DetalleAudiencia> miListaAudiencia = null;
                    miListaAudiencia = (List<DetalleAudiencia>)Session["MidetalleAudiencia"];

                    miListaAudiencia.RemoveAll(x => x.NU_item == Convert.ToInt32(item));

                    DetalleAudiencia ObjAudiencia_nuevo = new DetalleAudiencia();
                    List<DetalleAudiencia> mi_nuevaListaAudiencia = null;
                    mi_nuevaListaAudiencia = new List<DetalleAudiencia>();
                    int item_a = 0;
                    foreach (var s in miListaAudiencia)
                    {
                        item_a = item_a + 1;

                        ObjAudiencia_nuevo.NU_item = item_a;
                        ObjAudiencia_nuevo.CO_legajo = s.CO_legajo;
                        ObjAudiencia_nuevo.CO_cuaderno = s.CO_cuaderno;
                        ObjAudiencia_nuevo.FE_audiencia = s.FE_audiencia;
                        ObjAudiencia_nuevo.HO_audiencia = s.HO_audiencia;
                        ObjAudiencia_nuevo.CO_tipoaudiencia = s.CO_tipoaudiencia;
                        ObjAudiencia_nuevo.NO_tipoaudiencia = s.NO_tipoaudiencia;
                        ObjAudiencia_nuevo.TX_sumilla_audiencia = s.TX_sumilla_audiencia;

                        mi_nuevaListaAudiencia.Add(ObjAudiencia_nuevo);
                    }

                    Session["MidetalleAudiencia"] = mi_nuevaListaAudiencia;
                    dgv_Agenda.DataSource = mi_nuevaListaAudiencia;
                    dgv_Agenda.DataBind();

                    int count = dgv_Agenda.VisibleRowCount;

                    int Paginar = Convert.ToInt16(count / 10);
                    dgv_Agenda.PageIndex = Paginar;
                }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.InnerException.ToString(), "Error");
            }
        }
        private void GrabarAudiencia()
        {
            try
            {
                T_Audiencia Ent_Audiencia;
                List<T_Audiencia> ListaAudiencia = null;
                ListaAudiencia = new List<T_Audiencia>();


                List<DetalleAudiencia> miListaAudiencia = null;
                miListaAudiencia = (List<DetalleAudiencia>)Session["MidetalleAudiencia"];

                foreach (var s in miListaAudiencia)
                {
                    Ent_Audiencia = new T_Audiencia();
                    Ent_Audiencia.NU_item = s.NU_item;
                    Ent_Audiencia.CO_legajo = s.CO_legajo;
                    Ent_Audiencia.CO_cuaderno = s.CO_cuaderno;
                    Ent_Audiencia.FE_audiencia = Convert.ToDateTime(s.FE_audiencia);
                    Ent_Audiencia.HO_audiencia = s.HO_audiencia;
                    Ent_Audiencia.CO_tipoaudiencia = s.CO_tipoaudiencia;
                    Ent_Audiencia.TX_sumilla_audiencia = s.TX_sumilla_audiencia;

                    ListaAudiencia.Add(Ent_Audiencia);
                }

                IAgendaJudicialActualizar = new clsFacadeActualizarAgendaJudicial();

                if (IAgendaJudicialActualizar.ActualizarAudiencia(ListaAudiencia, "I", txtNumeroLegajo.Text))
                {
                    MostrarComentario("Se Actualizo Correctamente");
                }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.InnerException.ToString(), "Error");
            }
        }
        #endregion

        public struct DetalleAudiencia
        {
            public int NU_item { get; set; }
            public string CO_legajo { get; set; }
            public int CO_cuaderno { get; set; }
            public DateTime FE_audiencia { get; set; }
            public string HO_audiencia { get; set; }
            public string CO_tipoaudiencia { get; set; }
            public string NO_tipoaudiencia { get; set; }
            public string TX_sumilla_audiencia { get; set; }
        }

    }
}